package com.text.basic;

/**
 * Created by mu on 2017/7/27.
 */
public class FindPrimerNumber {
    public static void main(String[] args) {
       // isPrimerNumber();
        findSinglePrimerNumber();
        //findAllPrimerNumber();
    }

    /**
     * 给定一个数，小于该数的所有素数
     */
    private static void findAllPrimerNumber() {
        int n = 100;//待判断的数
        int[] arr = new int[n + 1];
        int i, j, k;
        for (i = 1; i < n + 1; i++) {
            arr[i] = 1;
        }
        for (i = 2; i * i < n; i++) {
            if (arr[i] == 1) {
                for (j = i * i; j < n + 1; j += i) {
                    arr[j] = 0;
                }
            }
        }
        /*
        输出素数序列
         */
        for (i = 2; i < n + 1; i++) {
            if (arr[i] == 1) {
                System.out.println(i);
            }
        }
    }

    /**
     * 给定一个数，查找第一次出现的素数
     */
    private static void findSinglePrimerNumber() {
        int n = 50;//待判断的数
        int start = 32, end = 50;//待判断的数区间
        int i;
        for (i = start; i < end; i++) {
            if(isPrimerNumber(i)==1){
                break;
            }
        }
    }

    /**
     * 判断一个数是否是素数
     */

    private static int isPrimerNumber(int n) {
      //  int n = 6;//待判断的数
        int i;
        int flag=0;
        if (n >= 2) {
            for (i = 2; i * i <= n && (n % i != 0); i++) ;
            if (i * i > n) {
                System.out.println(n + "是素数");
                flag=1;
            } else {
                System.out.println(n + "不是素数");
            }
        } else {
            System.out.println(n + "不是素数");
        }

        return flag;
    }
}
